package cn.itsource.user.service.impl;

import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.SecureUtil;
import cn.itsource.user.domain.User;
import cn.itsource.user.mapper.UserMapper;
import cn.itsource.user.query.UserQuery;
import cn.itsource.user.service.IUserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class UserServiceImpl implements IUserService {

    @Autowired
    private UserMapper userMapper;

    // 新增用户
    @Override
    public void add(User user) {
        // 使用hutool工具包进行对密码的加密，先随机生成一个字符串，再使用mds进行加密
        String salt = RandomUtil.randomString(32); // 设置盐值
        String PWD = SecureUtil.md5(user.getPassword()+salt); // 使用MD5加密
        user.setSalt(salt); // 设置盐值
        user.setPassword(PWD); // 设置密码
        userMapper.add(user);
    }

    // 删除用户
    @Override
    public void delete(Long id) {
        userMapper.delete(id);
    }

    // 查询单个用户
    @Override
    public User get(Long id) {
        return userMapper.get(id);
    }

    // 查询用户
    @Override
    public List<User> getAll() {
        return userMapper.getAll();
    }

    // 批量删除用户
    @Override
    public void delPatch(Long[] ids) {
        userMapper.delPatch(ids);
    }

    // 使用分页插件进行分页查询
    @Override
    public PageInfo<User> pageInfo(UserQuery userQuery) {
        // 设置参数
        PageHelper.startPage(userQuery.getCurrentPage(),userQuery.getPageSize());
        // 查询用户信息
        List<User> users = userMapper.getAllByQuery(userQuery);
        // 返回查询结果
        return new PageInfo<>(users);
    }

    // 更新用户信息
    @Override
    public void updata(User user) {
        userMapper.update(user);
    }
}
